From: Carlos Garnacho Date: Fri, 10 Nov 2017 17:29:53 +0000 (+0100) Subject: st: Make st_button_fake_release() work with touch press X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~994^2^2~85 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3dd3c1ac34d9be02c780a008ce998848fb5f2898;p=gnome-shell.git st: Make st_button_fake_release() work with touch press The st_button_release() call wouldn't happen because StButton does not set priv->button_mask on touch events. And if we make it called, we can't try to unset the device grab at the end of the function, as device/sequence are unset earlier on. --- diff --git a/src/st/st-button.c b/src/st/st-button.c index 38fe20759..8f5c4922f 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -765,7 +765,13 @@ st_button_fake_release (StButton *button) g_return_if_fail (ST_IS_BUTTON (button)); priv = st_button_get_instance_private (button); - if (priv->pressed) + if (priv->device && priv->press_sequence) + { + clutter_input_device_sequence_ungrab (priv->device, + priv->press_sequence); + } + + if (priv->pressed || priv->press_sequence) st_button_release (button, priv->device, priv->pressed, 0, NULL); @@ -775,14 +781,6 @@ st_button_fake_release (StButton *button) clutter_ungrab_pointer (); } - if (priv->device && - priv->press_sequence) - { - clutter_input_device_sequence_ungrab (priv->device, - priv->press_sequence); - priv->press_sequence = NULL; - } - priv->device = NULL; }